/*
  首先，dart的接口没有interface关键字定义接口，而是普通类或抽象类都可以作为接口被实现。
  同样使用implements关键字进行实现。
  但是dart的接口有点奇怪，如果实现的类是普通类，会将普通类和抽象中的属性的方法全部需要覆写一遍。
  而因为抽象类可以定义抽象方法，普通类不可以，所以一般如果要实现像Java接口那样的方式，一般会使用抽象类。
  建议使用抽象类定义接口。

*/

// 定义一个DB库，支持mysql、mssql、MongoDB，这三个数据库都有相同的方法

// 我们一般使用抽象类当做接口，接口的作用就是约定、规范
abstract class DB {
  String? uri;

  add(data);
  edit();
  delete();
  select();
}

// 使用implements关键字去实现抽象类
class MySql implements DB {
  @override
  String? uri;

  MySql(this.uri);

  @override
  add(data) {
    print('这是mysql的add方法，我收到了一条数据：${data}');
  }

  @override
  edit() {}

  @override
  delete() {}

  @override
  select() {}
}

void main(){
  var mysql = new MySql('http://localhost:3306');
  mysql.add('张三');
}
